package kr.co.bettersoft.waitnumberstorem.common;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import kr.co.bettersoft.waitnumberstorem.activity.R;
import kr.co.bettersoft.waitnumberstorem.domain.EventNotice;
import kr.co.bettersoft.waitnumberstorem.domain.WaitingNumberStore;
import kr.co.bettersoft.waitnumberstorem.domain.WaitingRecommendation;
import kr.co.bettersoft.waitnumberstorem.domain.WaitingUser;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ContentBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.util.Log;
/**
 * 서버와 통신하는 기능들을 모아놓은 클래스이다.
 * @author blue
 * 
 */
public class WaitnumberStoreMRest {
	String TAG = "WaitnumberStoreMRest";

	// 서버 통신
	int responseCode = 0;
	String controllerName ="";
	String methodName ="";
	String serverName = CommonConstant.serverNames;

	int isRunning = 0;		// 통신 도중 중복 호출을 방지하기 위함.
	String fullUrl = "";		// 서버 호출할 전에 URL 주소
	String inputJson = "";		// 서버로 전달할 데이터를 JSON 변환한 값

	// 현 시각
	String nowDate;


	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
	// 서버 통신

	/**
	 * RestCertificationStep1
	 *  전화번호를 보내서 인증번호 4자리를 받아온다.
	 * @return  String
	 */
	public String RestCertificationStep1(WaitingUser waitUserParam){

//		waitingUser = waitUserParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingCertificationController";
		methodName = "requestCertification";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("phoneNumber", waitUserParam.getPhoneNumber());	
			obj.put("activateYn", "Y");
			obj.put("modifyDate", nowDate);
			obj.put("registerDate", nowDate);
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
		if(!(callResult.equals("F"))){
			try {
				JSONObject jsonObject = new JSONObject(callResult);
				callResult = jsonObject.getString("result").toString(); 

			} catch (JSONException e) {
				callResult = "F";
				e.printStackTrace();
			} 
		}
		Log. d(TAG,"callResult:"+callResult);
		return callResult;
	}


	/**
	 * RestCertificationStep2
	 *  전화번호, 인증번호 4자리를 보내서 승인을 받는다.
	 * @return  String
	 */
	public String RestCertificationStep2(WaitingUser waitUserParam){

//		waitingUser = waitUserParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingCertificationController";
		methodName = "requestAdmission";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("phoneNumber", waitUserParam.getPhoneNumber());			// 전번
			obj.put("certificationNumber", waitUserParam.getCertiNum());	// 승인번호		
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
		if(!(callResult.equals("F"))){
			try {
				JSONObject jsonObject = new JSONObject(callResult);
				callResult = jsonObject.getString("result").toString(); 
				//Log. d(TAG,"callResult:"+callResult);
			} catch (JSONException e) {
				callResult = "F";
				e.printStackTrace();
			} 
		}
		return callResult;
	}
//	// 전화번호, 인증번호 4자리를 보내서 승인을 받는다.
//	class CertificationStep2 implements Callable<String>{
//		@Override
//		public String call() throws Exception {
//			nowDate = CommonUtils.getNowDate();
//
//			// 파라미터 셋팅
//			controllerName = "waitingCertificationController";
//			methodName = "requestAdmission";
//			fullUrl = serverName+"/"+controllerName+"/"+methodName;
//			JSONObject obj = new JSONObject();
//			try{		 
//				obj.put("phoneNumber", waitingUser.getPhoneNumber());			// 전번
//				obj.put("certificationNumber", waitingUser.getCertiNum());	// 승인번호		
//				obj.put("activateYn", "Y");
//			}catch(Exception e){
//				e.printStackTrace();
//			}
//			inputJson = obj.toString();
//
//			// 서버호출 메소드 실행
//			String callResult = callServerMethod(fullUrl, inputJson);
//
//			// 서버 호출 결과 처리
//			if(!(callResult.equals("F"))){
//				try {
//					JSONObject jsonObject = new JSONObject(callResult);
//					callResult = jsonObject.getString("result").toString(); 
//					//Log. d(TAG,"callResult:"+callResult);
//				} catch (JSONException e) {
//					callResult = "F";
//					e.printStackTrace();
//				} 
//			}
//			return callResult;
//		}
//	}

	/**
	 * RestLogin
	 *  로그인한다
	 * @return  String
	 */
	public String RestLogin(WaitingNumberStore waitingNumberStoreParam){

//		waitingNumberStore = waitingNumberStoreParam;

		// 파라미터 셋팅
		controllerName = "waitingMerchantController";
		methodName = "login";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId()); // 가맹점 아이디
			obj.put("password", waitingNumberStoreParam.getPassword()); // 가맹점 비번
			obj.put("restrictionYn", "Y"); // 제한된 아이디인지? 공백.(서버에서 처리하므로) --> 테이블 변경에 따라 함께 전달. 값은 Y
			obj.put("activateYn", "Y"); // 활성화 여부 -> 무조건 Y
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
		if(!(callResult.equals("F"))){
			try {
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult = jsonObject.getString("totalCount");
				}catch(Exception e){
					callResult = "0";
				}
			} catch (JSONException e) {
				callResult = "0";
			}
		}else{
			callResult = "0";
		}
		return callResult;
	}
	/**
	 * RestSelectMerchantInformation
	 *  가맹점 정보를 가져 온다.
	 * @return  String
	 */
	public String RestSelectMerchantInformation(WaitingNumberStore waitingNumberStoreParam){
		
//		waitingNumberStore = waitingNumberStoreParam;
		
		// 파라미터 셋팅
		controllerName = "waitingMerchantController";
		methodName = "selectMerchantInformation";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId()); // 가맹점 아이디
			obj.put("activateYn", "Y"); // 활성화 여부 -> 무조건 Y
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();
		
		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
		
		// 서버 호출 결과 처리
			/*
			 *  tempstr:{
			 *  "merchantId":"car",
			 *  "password":"db25f2fc14cd2d2b1e7af307241f548fb03c312a",
			 *  "name":"홍길동",
			 *  "companyName":"일등카센타",
			 *  "introduction":"헌차도 새차처럼 수리해드립니다. 최고의 서비스를 보장합니다.",
			 *  "profileImageUrl":"","profileThumbnailImageUrl":"","birthday":"",
			 *  "openingDate":"2012-4-12",
			 *  "email":"qwer@qwer.qwer",
			 *  "homePage":"qwerewq",
			 *  "blog":"qqwweerr","agencyCode":"KR_0020001",
			 *  "countryCode":"KR","languageCode":"ko",
			 *  "mobilePhoneNumber":"","homePhoneNumber":"",
			 *  "workPhoneNumber":"01022173645","faxPhoneNumber":"",
			 *  "zipCode01":"150-727","address01":"서울 영등포구 여의도동 금산빌딩 ",
			 *  "address02":"11-5","zipCode02":"","address03":"",
			 *  "address04":"","zipCode03":"","address05":"","address06":"",
			 *  "zipCode04":"","address07":"","address08":"","zipCode05":"",
			 *  "address09":"","address10":"","businessType":"Gen",
			 *  "businessRegistrationNumber01":"2534-7654-9786",
			 *  "businessRegistrationNumber02":"","businessRegistrationNumber03":"",
			 *  "businessRegistrationNumber04":"","businessRegistrationNumber05":"",
			 *  "businessRegistrationNumber06":"","businessRegistrationNumber07":"",
			 *  "businessRegistrationNumber08":"","businessRegistrationNumber09":"",
			 *  "businessRegistrationNumber10":"","businessKind01":"","businessKind02":"",
			 *  "businessKind03":"기타","businessKind04":"","businessKind05":"","businessArea01":"",
			 *  "businessArea02":"","businessArea03":"","businessArea04":"","businessArea05":"",
			 *  "latitude":"37.5708413","longitude":"126.9777917","decreaseMileage":"100","decreaseMileageCash":"100",
			 *  "prSentence":"서비스,품질 분야 2013년 최우수 업체 선정. 일등카센터입니다.","prPicture01":"","prPicture02":"",
			 *  "prPicture03":"","prPicture04":"","prPicture05":"","restrictionYn":"Y","grade":"5","activateYn":"Y",
			 *  "modifyDate":"2013-05-13 14:51:59","registerDate":"2013-05-13 14:51:59","totalCount":null,"result":null}
			 */
			
		return callResult;
	}


	/**
	 * RestSelectDuplicationUser
	 *  중복 체크한다
	 * @param waitingUserParam 
	 * @param  int
	 * @param  WaitingNumberStore
	 * @return  String
	 */
	public String RestSelectDuplicationUser(int runModeParam, WaitingNumberStore waitingNumberStoreParam, WaitingUser waitingUserParam){

//		runMode = runModeParam;
//		waitingNumberStore = waitingNumberStoreParam;
//		waitingUser = waitingUserParam;

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "selectDuplicationUser";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId()); // 가맹점 아이디
			if(runModeParam==2){ // 이름 모드
				obj.put("qrCode", ""); // qr 코드 = 전번 -> qr로 등록시
				obj.put("phoneNumber", ""); // 고객 전번 -> 전번으로 등록시
				obj.put("userName", waitingUserParam.getInputText()); // 고객 이름 또는 닉네임 .
			}else if(runModeParam==3){ // 전번 모드
				obj.put("qrCode", ""); // qr 코드 = 전번 -> qr로 등록시
				obj.put("phoneNumber", waitingUserParam.getInputText()); // 고객 전번 -> 전번으로 등록시
				obj.put("userName", ""); // 고객 이름 또는 닉네임 .
			}else if(runModeParam==4){ // QR 모드
				obj.put("qrCode", waitingUserParam.getInputText()); // qr 코드 = 전번 -> qr로 등록시
				obj.put("phoneNumber", ""); // 고객 전번 -> 전번으로 등록시
				obj.put("userName", ""); // 고객 이름 또는 닉네임 .
			}
			obj.put("admissionYn", "N"); // 등록된 고객인지? Y
			obj.put("activateYn", "Y"); // 활성화 여부 -> 무조건 Y
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
		if(!(callResult.equals("F"))){
			try {
				// 데이터 세팅부..
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult =jsonObject.getString("totalCount");
				}catch(Exception e){
					e.printStackTrace();
					callResult = "1";
				}
			} catch (JSONException e) {
				callResult = "F";
			}
		}else{
			callResult = "F";
		}
		return callResult;
	}

	
	/**
	 * RestSelectRegisterTeamAndUser
	 *   오늘 총 등록 팀수, 인원수를 가져온다.
	 * @return  String
	 */
	public String RestSelectRegisterTeamAndUser(WaitingNumberStore waitingNumberStoreParam){
		
//		waitingNumberStore = waitingNumberStoreParam;
		
		nowDate = CommonUtils.getNowDate();
		
		// 파라미터 셋팅
		controllerName = "waitingUserController";	// waitingUserController
		methodName = "selectRegisterTeamAndUser";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("activateYn", "Y");
			obj.put("registerDate", nowDate);	
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();
		
		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
		// 결과 처리
		
		return callResult;
	}
	/**
	 * RestSelectUserTotalCount
	 *  (오늘) 총 대기 인원 숫자를 가져 온다.  . 리스트로 받게 되는데 리스트의 개수가 등록한 총 팀수가 되고, 리스트가 있을때 첫번째 항목의 totalCount 가 총 인원수가 됨
	 * @return  String
	 */
	public String RestSelectUserTotalCountToday(WaitingNumberStore waitingNumberStoreParam){
		
//		waitingNumberStore = waitingNumberStoreParam;
		
		nowDate = CommonUtils.getNowDate();
		
		// 파라미터 셋팅
		controllerName = "waitingUserController";	// waitingUserController
		methodName = "selectRegisterTeamAndUser";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("activateYn", "Y");
			obj.put("registerDate", nowDate);	
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();
		
		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
		// 결과 처리
		
		return callResult;
	}


	/**
	 * RestGetWaitList
	 *  대기 목록을 가져온다.
	 * @return  String
	 */
	public String RestGetWaitList(WaitingNumberStore waitingNumberStoreParam){

//		waitingNumberStore = waitingNumberStoreParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "selectUserList";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("registerDate", nowDate);
			obj.put("admissionYn", "N");
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
		// 결과 처리

		return callResult;
	}
	
	
	

	/**
	 * RestSelectRecentAdmissionUserList
	 *  오늘 가장 최근에 등록/입장한 고객 2 팀의 목록을 가져 온다.
	 *  merchantId
admissionYn = Y
activateYn = Y
registerDate
	 * @return  String
	 * List<WaitingUser>
	 */
	public String RestSelectRecentAdmissionUserList(WaitingNumberStore waitingNumberStoreParam){
//		waitingNumberStore = waitingNumberStoreParam;
		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "selectRecentAdmissionUserList";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("admissionYn", "Y");
			obj.put("activateYn", "Y");
			obj.put("registerDate", nowDate);		// ?? 등록 날짜. 보내는 형식 궁금..
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
		// 결과 처리

		return callResult;
	}	
	
	/**
	 * RestSelectTodayAdmissionUserList
	 *  오늘 등록/입장한 고객 목록을 가져 온다.
	 *  merchantId
admissionYn = Y
activateYn = Y
registerDate
	 * @return  String
	 * List<WaitingUser>
	 */
	public String RestSelectTodayAdmissionUserList(WaitingNumberStore waitingNumberStoreParam){

//		waitingNumberStore = waitingNumberStoreParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "selectTodayAdmissionUserList";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("registerDate", nowDate);
			obj.put("admissionYn", "Y");
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
		// 결과 처리

		return callResult;
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	/**
	 * RestRegUser
	 *  통합 대기 등록한다.
	 * @param totalCountParam 
	 * @return  String
	 */
	public String RestRegUser(int runModeParam, String totalCountParam, WaitingNumberStore waitingNumberStoreParam, WaitingUser waitingUserParam){

//		runMode = runModeParam;
//		totalCount = totalCountParam;
//		waitingNumberStore = waitingNumberStoreParam;
//		waitingUser = waitingUserParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "registerUser";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());	// 가맹점 아이디
			//모드에 맞게 데이터를 넣는다.
			if(runModeParam==2){			// 이름 모드
				obj.put("qrCode", "");			// qr 코드 = 전번 -> qr로 등록시
				obj.put("phoneNumber", "");		// 고객 전번	-> 전번으로 등록시		
				obj.put("userName", waitingUserParam.getInputText());	// 고객 이름 또는 닉네임 .	
				obj.put("companion", waitingUserParam.getCompanion());			// 동행인 숫자.
			}else if(runModeParam==3){	// 전번 모드
				obj.put("qrCode", "");			// qr 코드 = 전번 -> qr로 등록시
				obj.put("phoneNumber", waitingUserParam.getInputText());		// 고객 전번	-> 전번으로 등록시		
				obj.put("userName", "");	// 고객 이름 또는 닉네임 .	
				obj.put("companion", waitingUserParam.getCompanion());			// 동행인 숫자.
			}else if(runModeParam==4){	// QR 모드
				obj.put("qrCode", waitingUserParam.getInputText());			// qr 코드 = 전번 -> qr로 등록시
				obj.put("phoneNumber", "");		// 고객 전번	-> 전번으로 등록시		
				obj.put("userName", "");	// 고객 이름 또는 닉네임 .	
				obj.put("companion", waitingUserParam.getCompanion());			// 동행인 숫자.
			}
			//totalCount 에 맞게 다음 값을 넣는다
			if(totalCountParam.equals("0")){
				obj.put("nextTurnYn", "Y");			// 다음 차례인지?
			}else{
				obj.put("nextTurnYn", "N");			// 다음 차례인지?
			}
			obj.put("admissionYn", "N");		
			obj.put("activateYn", "Y");			// 활성화 여부 -> 무조건 Y
			obj.put("modifyDate", nowDate);			// 현시각
			obj.put("registerDate", nowDate);		// 현시각
			obj.put("registrationId", "");				// *** 
			obj.put("receiveNotificationYn", "");		// *** 
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
		if(!(callResult.equals("F"))){
			try {
				// 데이터 세팅부..
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult =jsonObject.getString("result");
				}catch(Exception e){
					e.printStackTrace();
					callResult = "FAIL";
				}
				//Log. d(TAG,"callResult::"+callResult);

			} catch (JSONException e) {
				e.printStackTrace();
			} 
		}else{
			callResult = "FAIL";
		}
		return callResult;
	}
	
	
	/**
	 * RestUpdateDeactivateUser 
	 *  대기를 취소한다
	 * @param merchantId, idWaitingUsers
	 * @return  String
	 */
	public String RestUpdateDeactivateUser(WaitingNumberStore waitingNumberStoreParam, WaitingUser waitingUserParam){
//		runMode = runModeParam;
//		totalCount = totalCountParam;
//		waitingNumberStore = waitingNumberStoreParam;
//		waitingUser = waitingUserParam;
		
		nowDate = CommonUtils.getNowDate();
		
		Log.d(TAG,"merchantId::"+waitingNumberStoreParam.getMerchantId());
		Log.d(TAG,"idWaitingUsers::"+waitingUserParam.getIdWaitingUsers());
		
		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "updateDeactivateUser";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		Log.d(TAG,"fullUrl::"+fullUrl);
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("activateYn", "N");			
			obj.put("modifyDate", nowDate);			 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());			// qr 코드 = 전번 -> qr로 등록시
			obj.put("idWaitingUsers", waitingUserParam.getIdWaitingUsers());		// 고객 전번	-> 전번으로 등록시		
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();
		
		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
//		Log. d(TAG,"tempstr::"+tempstr);
		// 서버 호출 결과 처리
		if(!(callResult.equals("F"))){
			try {
				// 데이터 세팅부..
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult =jsonObject.getString("result");
				}catch(Exception e){
					e.printStackTrace();
					callResult = "FAIL";
				}
			} catch (JSONException e) {
				e.printStackTrace();
			} 
		}else{
			callResult = "FAIL";
		}
		return callResult;
	}
	/**
	 * RestUpdateDeactivateUserAndNextTurnYn
	 *  대기를 취소한다 + 다음 대기자의 next_turn_yn 의 값을 'Y' 로 업데이트 한다.(둘이상일때 첫손님 취소시킬때 사용)
	 * @param merchantId, idWaitingUsers
	 * @return  String
	 */
	public String RestUpdateDeactivateUserAndNextTurnYn(WaitingNumberStore waitingNumberStoreParam, WaitingUser waitingUserParam){
//		runMode = runModeParam;
//		totalCount = totalCountParam;
//		waitingNumberStore = waitingNumberStoreParam;
//		waitingUser = waitingUserParam;
		
		nowDate = CommonUtils.getNowDate();
		Log.d(TAG,"nowDate::"+nowDate);
		Log.d(TAG,"merchantId::"+waitingNumberStoreParam.getMerchantId());
		Log.d(TAG,"idWaitingUsers::"+waitingUserParam.getIdWaitingUsers());
		Log.d(TAG,"getIdWaitingUsersNextTurnYn::"+waitingUserParam.getIdWaitingUsersNextTurnYn());
		
		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "updateDeactivateUserAndUserNextTurnYn";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		Log.d(TAG,"fullUrl::"+fullUrl);
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());			// qr 코드 = 전번 -> qr로 등록시
			
			// http://waiting.onemobileservice.com/waitingRest/waitingUserController/updateDeactivateUserAndNextTurnYn
				
			obj.put("idWaitingUserDeactivateYn", waitingUserParam.getIdWaitingUsers());		// 대기 취소하는 사용자 id.
			obj.put("deactivateAdmissionYn", "N");		// deactivateAdmissionYn = N		대기 취소하는 사용자의 admission_yn 값.
			obj.put("deactivateNextTurnYn", "N");		// deactivateNextTurnYn = N		대기 취소하는 사용자의 next_turn_yn 값.
			obj.put("deactivateActivateYn", "N");		// deactivateActivateYn = N		대기 취소하는 사용자의 activate_yn 값.
			
			obj.put("idWaitingUsersNextTurnYn", waitingUserParam.getIdWaitingUsersNextTurnYn());		// 다음 사람 ID	
			obj.put("nextTurnAdmissionYn", "N");	// nextTurnAdmissionYn = N
			obj.put("nextTurnNextTurnYn", "Y");		// nextTurnNextTurnYn = Y
			obj.put("activateYn", "Y");				// activateYn = Y			// 다음 사람.
			
			obj.put("modifyDate", nowDate);			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();
		
		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);
//		Log. d(TAG,"tempstr::"+tempstr);
		// 서버 호출 결과 처리
		if(!(callResult.equals("F"))){
			try {
				// 데이터 세팅부..
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult =jsonObject.getString("result");
				}catch(Exception e){
					e.printStackTrace();
					callResult = "FAIL";
				}
			} catch (JSONException e) {
				e.printStackTrace();
			} 
		}else{
			callResult = "FAIL";
		}
		return callResult;
	}
	
	
	

	/**
	 * RestGetNoticeList
	 *  공지 목록을 가져온다.
	 * @return  String
	 */
	public String RestGetNoticeList(WaitingNumberStore waitingNumberStoreParam){

//		waitingNumberStore = waitingNumberStoreParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingEventController";
		methodName = "selectMerchantEventList";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리 - 지금은 별도 처리 없음
		return callResult;
	}


	/**
	 * RestGetNoticeDetail
	 *  공지 상세 화면 불러온다.
	 * @return  String
	 */
	public String RestGetNoticeDetail(EventNotice eventNoticeParam){

//		eventNotice = eventNoticeParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingEventController";
		methodName = "selectEventInformation";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("idWaitingEvents", eventNoticeParam.getIdWaitingEvents());
			obj.put("merchantId", eventNoticeParam.getMerchantId());
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리 - 지금은 별도 처리 없음
		return callResult;
	}


	/**
	 * RestGetWaitPersonNumber
	 *  대기 인원수 가져온다.
	 * @return  String
	 */
	public String RestGetWaitPersonNumber(WaitingNumberStore waitingNumberStoreParam){

//		waitingNumberStore = waitingNumberStoreParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "selectUserTotalCount";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("registerDate", nowDate);
			obj.put("admissionYn", "N");
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리 - 지금은 별도 처리 없음
		return callResult;
	}


	/**
	 * RestEntranceNextPerson
	 *  다음고객 입장시킨다.
	 * @param waitingUserParam 
	 * @return  String
	 */
	public String RestEntranceNextPerson(WaitingNumberStore waitingNumberStoreParam, WaitingUser waitingUserParam){

//		waitingNumberStore = waitingNumberStoreParam;
//		waitingUser = waitingUserParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "updateUserAdmissionYn";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("nextTurnYn", "N");		// 다음차례 N
			obj.put("admissionYn", "Y");	// 입장가능 여부 Y
			obj.put("activateYn", "Y");		// 무조건 Y
			obj.put("modifyDate", nowDate);
			obj.put("idWaitingUsers", waitingUserParam.getIdWaitingUsers());		 
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리 - 지금은 별도 처리 없음
		if(!(callResult.equals("F"))){
			try {
				// 데이터 세팅부..
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult = jsonObject.getString("result");
				}catch(Exception e){
					callResult = "FAIL";
				}
			} catch (JSONException e) {
				e.printStackTrace();
			} 
		}
		return callResult;
	}


	/**
	 * RestUpdateUserAdmissionYnAndUserNextTurnYn
	 *  다음고객 입장 (대기 2인 이상)
	 * @param waitingUserParam 
	 * @return  String
	 */
	public String RestUpdateUserAdmissionYnAndUserNextTurnYn(WaitingNumberStore waitingNumberStoreParam, WaitingUser waitingUserParam){

//		waitingNumberStore = waitingNumberStoreParam;
//		waitingUser = waitingUserParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "updateUserAdmissionYnAndUserNextTurnYn";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());

			obj.put("idWaitingUsersAdmissionYn", waitingUserParam.getAdmissionYn());		 
			obj.put("idWaitingUsersNextTurnYn", waitingUserParam.getNextTurnYn());		 

			obj.put("admissionAdmissionYn", "Y");		 
			obj.put("admissionNextTurnYn", "N");		 

			obj.put("nextTurnAdmissionYn", "N");		// 다음차례 
			obj.put("nextTurnNextTurnYn", "Y");			// 다음차례  

			obj.put("activateYn", "Y");		// 무조건 Y
			obj.put("modifyDate", nowDate);
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리 - 지금은 별도 처리 없음
		if(!(callResult.equals("F"))){
			try {
				// 데이터 세팅부..
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult = jsonObject.getString("result");
				}catch(Exception e){
					callResult = "FAIL";
				}
			} catch (JSONException e) {
				e.printStackTrace();
			} 
		}
		return callResult;
	}


	/**
	 * RestEntranceOtherPerson
	 *   우선 입장
	 * @param waitingUserParam 
	 * @return  String
	 */
	public String RestEntranceOtherPerson(WaitingNumberStore waitingNumberStoreParam, WaitingUser waitingUserParam){

//		waitingNumberStore = waitingNumberStoreParam;
//		waitingUser = waitingUserParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingUserController";
		methodName = "updateUserAdmissionYn";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingNumberStoreParam.getMerchantId());
			obj.put("nextTurnYn", "N");		// 다음차례 N
			obj.put("admissionYn", "Y");	// 입장가능 여부 Y
			obj.put("activateYn", "Y");		//   Y
			obj.put("modifyDate", nowDate);
			obj.put("idWaitingUsers", waitingUserParam.getIdWaitingUsers());	
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리 - 지금은 별도 처리 없음
		if(!(callResult.equals("F"))){
			try {
				// 데이터 세팅부..
				JSONObject jsonObject = new JSONObject(callResult);
				try{
					callResult = jsonObject.getString("result");
				}catch(Exception e){
					callResult = "FAIL";
				}
			} catch (JSONException e) {
				e.printStackTrace();
			} 
		}
		return callResult;
	}



	/**
	 * RestSelectMerchantRecommendationList
	 *  가맹점의 추천(리뷰) 목록을 가져 온다.
	 * @param merchantParam 
	 * @return  String
	 */
	public String RestSelectMerchantRecommendationList(WaitingRecommendation waitingRecommendationParam, Context contextParam){
//		waitingRecommendation = waitingRecommendationParam;
//		context = contextParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingMemberRecommendationController";
		methodName = "selectMerchantRecommendationList";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", waitingRecommendationParam.getMerchantId());
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
//		if(!(callResult.equals("F"))){
//
//			try {
//				JSONArray jsonArray2 = new JSONArray(callResult);
//				int max = jsonArray2.length();
//				try {
//					waitingRecommendationEntries = new ArrayList<WaitingRecommendation>(max);
//					/*
//					 * "memberId":"01085858025",
//					 * "evaluation":"6",
//					 * "content":"ㅊㅋ",
//					 * "modifyDate":"2013-07-23 16:44:54",
//					 * "registerDate":"2013-07-23 16:44:54",
//					 */
//					String tmp_memberId = "";
//					String tmpstr2 = "";
//					String tmp_registerDate = "";
//					String tmp_evaluation = "";
//					String tmp_content = "";
//					if(max>0){
//						for ( int i = 0; i < max; i++ ){
//							jsonObject = jsonArray2.getJSONObject(i);
//							//  idCheckMileageMileages,  mileage,  modifyDate,  checkMileageMembersCheckMileageID,  checkMileageMerchantsMerchantID
//							// 객체 만들고 값 받은거 넣어서 저장..  저장값: 인덱스번호, 수정날짜, 아이디, 가맹점아이디.
//							try{
//								tmp_memberId = jsonObject.getString("memberId");
//							}catch(Exception e){
//								tmp_memberId = "";
//							}
//							try{
//								tmp_registerDate = jsonObject.getString("registerDate");
//								if(tmp_registerDate.length()>9){
////									tmpstr2 = tmp_registerDate.substring(0, 4)+ "-" 		// 년
////									+ tmp_registerDate.substring(5, 7)+ "-" 					// 월
////									+ tmp_registerDate.substring(8, 10) 					// 일
////									;
////									tmp_registerDate = tmpstr2;
//									
//									// 원하는 날짜 형식에 맞춰서 데이터 넣기
//									int dayOfRegisterDate = 0;	// 오전 오후 분간용
//									String dayOfRegisterDateStr = "";	// 다시 문자형 시간으로 변환해서 저장(2자리 유지하기 위함)
//									String strAMPM = "";
//									// 오전 오후 분간하기
//									dayOfRegisterDate = Integer.parseInt(tmp_registerDate.substring(11, 13));	// dayOfRegisterDate
//									if(dayOfRegisterDate>11){		// 12시 넘었을때 = 오후
//										dayOfRegisterDate = dayOfRegisterDate - 12;
//										strAMPM = context.getString(R.string.pm_of_day)+"";
//									}else{				// 12시 이전 = 오전
//										strAMPM = context.getString(R.string.am_of_day)+"";
//									}
//									// 두자리로 맞추기.
//									dayOfRegisterDateStr = Integer.toString(dayOfRegisterDate);
//									if(dayOfRegisterDate<10){		
//										dayOfRegisterDateStr = "0"+dayOfRegisterDateStr;
//									}
//									tmp_registerDate = 
//										tmp_registerDate.substring(0, 4)+ context.getString(R.string.year) 
//										+tmp_registerDate.substring(5, 7) + context.getString(R.string.month) 
//										+tmp_registerDate.substring(8, 10) + context.getString(R.string.day) 
//										+ " " + strAMPM + " " 
//										+dayOfRegisterDateStr + context.getString(R.string.hour) 
//										+tmp_registerDate.substring(14, 16) + context.getString(R.string.minute) 
//										+tmp_registerDate.substring(17, 19) + context.getString(R.string.seconds);
//								}
//							}catch(Exception e){
//								tmp_registerDate = "";
//							}
//							try{
//								//								tmp_evaluation = jsonObject.getString("evaluation");
//								tmp_evaluation = (int)Float.parseFloat(jsonObject.getString("evaluation"))+"";	// 소수점 제거
//							}catch(Exception e){
//								tmp_evaluation = "0";
//							}
//							try{
//								tmp_content = jsonObject.getString("content");
//							}catch(Exception e){
//								tmp_content = "";
//							}
//							waitingRecommendationEntries.add(new WaitingRecommendation(tmp_memberId,
//									tmp_registerDate,
//									tmp_evaluation,
//									tmp_content
//							));
//						}
//					}
//				}catch (JSONException e) {
//					e.printStackTrace();
//				}
//				waitingRecommendationEntriesFn = waitingRecommendationEntries; 
//			} catch (JSONException e1) {
//				e1.printStackTrace();
//			}
			// List<WaitingRecommendation>
//		}
		return callResult;
	}

	/**
	 * RestSelectRecommendationInformation
	 *  가맹점 추천 정보를 가져온다.
	 * @param merchantParam 
	 * @return  String
	 */
	public String RestSelectRecommendationInformation(WaitingNumberStore merchantParam){
//		waitingNumberStore = merchantParam;

		//		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingRecommendationController";
		methodName = "selectRecommendationInformation";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", merchantParam.getMerchantId());
			obj.put("activateYn", "Y");
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
//		if(callResult.equals("S")){
//		}
		return callResult;
	}








	/**
	 * RestRegisterNotice
	 *  가맹점 공지 등록 이미지 없음
	 * @param merchantParam 
	 * @return  String
	 */
	public String RestRegisterNotice(EventNotice eventNoticeParam){
//		eventNotice = eventNoticeParam;

		nowDate = CommonUtils.getNowDate();

		// 파라미터 셋팅
		controllerName = "waitingEventController";
		methodName = "registerEvent";
		fullUrl = serverName+"/"+controllerName+"/"+methodName;
		JSONObject obj = new JSONObject();
		try{		 
			obj.put("merchantId", eventNoticeParam.getMerchantId());
			obj.put("subject", eventNoticeParam.getSubject());
			obj.put("content", eventNoticeParam.getContent());
			obj.put("imageFileUrl", "");
			obj.put("activateYn", "Y");
			obj.put("modifyDate", nowDate);
			obj.put("registerDate", nowDate);
		}catch(Exception e){
			e.printStackTrace();
		}
		inputJson = obj.toString();

		// 서버호출 메소드 실행
		String callResult = callServerMethod(fullUrl, inputJson);

		// 서버 호출 결과 처리
		if(callResult.equals("S")){
			Log. d(TAG,"callResult:"+callResult);		
			try {
				JSONObject jsonObject = new JSONObject(callResult);
				callResult = jsonObject.getString("result").toString(); 
			} catch (Exception e) {
				callResult = "F";
				e.printStackTrace();
			}
		}
		return callResult;
	}
	/**
	 * RestRegisterNoticeWithImage
	 *  가맹점 공지 등록 이미지 포함
	 * @param eventNoticeParam 
	 * @param context 
	 * @return  String
	 */
	public String RestRegisterNoticeWithImage(EventNotice eventNoticeParam, Context context) throws ClientProtocolException, IOException {
//		eventNotice = eventNoticeParam;

		nowDate = CommonUtils.getNowDate();

		serverName = CommonConstant.serverNames;
		controllerName = "waitingEventController";

		//		// 이미지 있을때와 없을때 호출하는 메소드 이름이 다름
		//		if(eventNotice.getImageFile() == null || (eventNoticeParam.getImageFileUrl()).length()<1){
		//			Log.d(TAG,"no img");
		//			methodName = "registerEvent";
		//		}else{
		methodName = "registerEventWithImage";
		//		}

		fullUrl = serverName+"/"+controllerName+"/"+methodName;

		HttpClient httpclient = new DefaultHttpClient();
		HttpPost httppost ;
		MultipartEntity mpEntity ;
		HttpResponse response = null;
		HttpEntity resEntity = null ;

		try {
			httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
			httppost = new HttpPost(fullUrl);
			mpEntity = new MultipartEntity();

			//차후 수정 서버 부분 수정
			mpEntity.addPart("merchantId", new StringBody(eventNoticeParam.getMerchantId()));
			mpEntity.addPart("subject", new StringBody(eventNoticeParam.getSubject()));
			mpEntity.addPart("content", new StringBody(eventNoticeParam.getContent()));
			mpEntity.addPart("imageFileUrl", new StringBody(""));
			mpEntity.addPart("activateYn", new StringBody("Y"));
			mpEntity.addPart("modifyDate", new StringBody(nowDate));
			mpEntity.addPart("registerDate", new StringBody(nowDate));

			//			// 이미지가 있을때와 없을때 file 파라미터에 넣는 값이 다름
			//			if(eventNotice.getImageFile() == null || (eventNoticeParam.getImageFileUrl()).length()<1){
			//				// 이미지가 없으면 "" 을 보냄
			//				mpEntity.addPart("file", new StringBody(""));		
			//			}else{
			// 이미지가 있으면 이미지를 보냄
			Bitmap selectedImg = eventNoticeParam.getImageFile();

			//Convert bitmap to byte array
			ByteArrayOutputStream bos = new ByteArrayOutputStream();		// ByteArrayOutputStream 객체 bos 생성
			selectedImg.compress(Bitmap.CompressFormat.PNG, 0, bos);		// 이미지를 PNG로 변환하여 bos 에 저장
			byte[] data = bos.toByteArray();								// 이미지를 byte[] 형으로 꺼냄
			Log.d(TAG,"img size3:"+data.length);							// 파일 용량

			String fileName = eventNoticeParam.getMerchantId() + "_" + CommonUtils.getNowDateMiliSec() + ".png";		// 이미지 이름 설정
			Log.d(TAG,"fileName::"+fileName);

			File file = new File(context.getCacheDir(), fileName);
			file.createNewFile();

			//write the bytes in file
			FileOutputStream fos = new FileOutputStream(file);
			fos.write(data);
			fos.flush();
			fos.close();

			// 이부분의 설정으로 파일을 보낸다.
			ContentBody cbFile = new FileBody(file, "image/jpeg");
			mpEntity.addPart("file", cbFile);  //서버에서 처리해주는 파일이름이 doc 이 되겠고, 내가 보내는 파일이 cbFile이다.
			//			}
			httppost.setEntity(mpEntity);
			response = httpclient.execute(httppost);
			resEntity = response.getEntity();
			httpclient.getConnectionManager().shutdown();
		} catch (Exception e) {
			e.printStackTrace();
		}
		String callResult="";
		if (resEntity != null) {
			String tmpStr = EntityUtils.toString(resEntity);
			try {
				JSONObject jsonObject = new JSONObject(tmpStr);
				callResult = jsonObject.getString("result").toString(); 
			} catch (Exception e) {
				callResult = "F";
				e.printStackTrace();
			}
		}else{
			callResult = "F";
		}
		return callResult;
	}




	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	

	// 공용 서버 호출 메소드
	public String callServerMethod(String fullUrl, String inputJson){
		// 현시각
		nowDate = CommonUtils.getNowDate();
		String callResult="";
		try{
			URL postUrl = new URL(fullUrl);
			HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();
			connection.setConnectTimeout(CommonConstant.serverConnectTimeOut);
			connection.setDoInput(true);		// 새로 추가됨
		    connection.setDoOutput(true);
//		    connection.setRequestProperty("Cache-Control", "no-cache");		// 새로 추가됨.
			connection.setInstanceFollowRedirects(false);	// 영향을 주지 않으므로 주석처리
			connection.setRequestMethod("POST");
			connection.setRequestProperty("Content-Type", "application/json");
//			connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");	

			//			/*
			//			 * 방법 1
			//			 */
			//			writer = new OutputStreamWriter(connection.getOutputStream());
			////			writer.write((inputJson.getBytes("UTF-8")).toString());		// class not found exception
			//			writer.write(inputJson);									// 정상 동작
			//			writer.flush();
			//			writer.close();

			/*
			 * 방법 2
			 */
			OutputStream os = connection.getOutputStream();
			os.write(inputJson.getBytes("UTF-8"));
			os.flush();


			responseCode = connection.getResponseCode();
			InputStream in =  connection.getInputStream();
			if(responseCode==200 || responseCode==204){
				// 결과를 처리.
				BufferedReader reader = new BufferedReader(new InputStreamReader(in), 8192);
				StringBuilder builder = new StringBuilder();
				String line =null;
				try {
					while((line=reader.readLine())!=null){
						builder.append(line).append("\n");
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
//				reader.close();
				callResult = builder.toString();
//				callResult = "S";
			}else{
				//Log. d(TAG,"Fail["+responseCode+"]");
				callResult="F";
			}
//			os.close();
//			in.close();
		}catch(Exception e){ 
			e.printStackTrace();
			callResult="F";
//			initNetwork();
		}
//		initNetwork();
		isRunning = 0;
		return callResult;
	}	

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////		
	// 처리 결과 반환 메소드

//	// 가맹점명, 가맹점주명
//	public WaitingNumberStore getWaitingNumberStore(){
//		return waitingNumberStore;
//	}
//	
//	// tempstr
//	public String getTempstr(){
//		return tempstr;
//	}
//
//	// waitingRecommendationEntriesFn
//	public List<WaitingRecommendation> getWaitingRecommendationEntriesFn(){
//		return waitingRecommendationEntriesFn;
//	}

	/////////////////////////////////////////////////////////////////////////////////////////////////////
	// 유틸

//	// 넷웍 초기화
//	public void initNetwork(){
//		if(connection!=null){
//			connection.disconnect();
//			connection = null;
//		}
//		if(os!=null){
//			os = null;
//		}
//		postUrl = null;
//	}
}
